The present invention generally relates to systems for detecting loss of messages, and more particularly to a system for detecting loss of a message in a computer system in which a message communication is made between first and second address spaces.
In a message based operating system and the like, it is desirable that the message communication is carried out efficiently and that a message which is lost during a fault is detectable so that a recovery can be made.
A computer system which uses a message based operating system is conceivable wherein a communication between independent address spaces is carried out by a message which is provided by a kernel message communication control unit of a kernel. In such a system environment, the relationship between the independent address spaces is sparse. For this reason, a certain address space is operable independently of a destruction or creation of another address space which has a communication relationship with the certain address space. However, there is a possibility that a message is lost by the destruction of the address space, and it is necessary to provide a mechanism for efficiently detecting the lost message.
The following three kinds of measures are conceivable with respect to the message lost during the communication.
According to a first system shown in FIG. 1A, monitoring and confirmation are carried out between address spaces. Address spaces 70 and 71 which have a communication relationship, and each address space monitors the destruction or creation of the other address space. The address space which detects the destruction of the other address space interrupts a new message transmission. In addition, when the destroyed address space is recreated, the two address spaces 70 and 71 confirm the communication state before the destruction of the address space and carry out an appropriate recovery process.
On the other hand, a second system shown in FIG. 1B employs the procedure of giving an immediate answer to each question. In other words, the transmission side address space 70 sends a message to the reception side address space 71, and the reception side address space 71 sends an answer to the transmission side address space 70 in response to the message. Therefore, the transmission side address space 70 can confirm whether or not the message is correctly received by the reception side address space 71.
A third system shown in FIG. 1C employs a message recreation mechanism provided by a kernel message communication control unit 23 of a kernel. Even when the reception side address space 71 is destroyed during the processing of the received message, the provision of the control unit 23 makes it possible to receive the same message by another address space 71' which is recreated.
However, the conceivable systems described above suffer from the following problems.
According to the first system shown in FIG. 1A, even when no message is actually lost, a confirmation procedure for detecting whether or not a message is lost is constantly required in both the address spaces 70 and 71 when a crash is generated. It is difficult to increase the independence of the address space, and there is a problem in that it is difficult to fully bring out the effects of making the relationship between the address spaces 70 and 71 sparse.
On the other hand, according to the second system shown in FIG. 1B, the procedure of giving an immediate answer to each question is employed for all messages. For this reason, there is a problem in that the overhead is large in a stationary state.
According to the third system shown in FIG. 1C, the following problems occur because the kernel stores a transmission message in a kernel buffer to prepare for a retransmission. In other words, the transmission side address space 70 in many cases stores data for retransmission in case of an erroneous process, and in addition, there is a procedure between the two address spaces 70 and 71 for determining which data is to be retransmitted first. For this reason, in the kernel in which the message is uniformly stored in the kernel buffer, the utilization efficiency of the memory is poor and the performance overhead is large.